From: Jasper St. Pierre Date: Thu, 16 Aug 2012 19:50:35 +0000 (-0400) Subject: messageTray: Defer creation of mainIcon X-Git-Tag: archive/raspbian/50.5-1+rpi1~1^2~1013^2^2~6174 X-Git-Url: https://dgit.raspbian.org/%22http://www.example.com/cgi/%22/%22http:/www.example.com/cgi/%22?a=commitdiff_plain;h=8f129e1c9de9968996fdb466354d0d38cfc17fcc;p=gnome-shell.git messageTray: Defer creation of mainIcon We need to make sure the Source is fully constructed before creating mainIcon, as SourceActor will query the count of the source. This fixes Telepathy Chats. https://bugzilla.gnome.org/show_bug.cgi?id=682045 --- diff --git a/js/ui/messageTray.js b/js/ui/messageTray.js index eabf6a7d5..2a736b68b 100644 --- a/js/ui/messageTray.js +++ b/js/ui/messageTray.js @@ -1132,9 +1132,6 @@ const Source = new Lang.Class({ this.isMuted = false; this.notifications = []; - - this.mainIcon = new SourceActor(this, this.ICON_SIZE); - this._setSummaryIcon(this.createIcon(this.ICON_SIZE)); }, get count() { @@ -1178,10 +1175,23 @@ const Source = new Lang.Class({ icon_size: size }); }, + _ensureMainIcon: function(icon) { + if (this._mainIcon) + return false; + + if (!icon) + icon = this.createIcon(this.ICON_SIZE); + + this._mainIcon = new SourceActor(this, this.ICON_SIZE); + this._mainIcon.setIcon(icon); + return true; + }, + // Unlike createIcon, this always returns the same actor; // there is only one summary icon actor for a Source. getSummaryIcon: function() { - return this.mainIcon.actor; + this._ensureMainIcon(); + return this._mainIcon.actor; }, pushNotification: function(notification) { @@ -1228,7 +1238,8 @@ const Source = new Lang.Class({ //// Protected methods //// _setSummaryIcon: function(icon) { - this.mainIcon.setIcon(icon); + if (!this._ensureMainIcon(icon)) + this._mainIcon.setIcon(icon); }, open: function(notification) {